package org.zhaoxi.demo2;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * @author zxiaoming
 * @Description:在不创建someService对应实现类的情况下，调用该实现类中对应方法
 * @date 2021/2/2421:02
 */
@Component
public class ServiceBean {
    @Autowired
    //@Autowired默认按类型装备，所以在容器中找到两个相同类型的实例就会报错,如果类型找不到，再按名称装配，如果指定了名称，那么只能按照名称进行装配了
    //为了解决这个问题可以使用指定名称装配
//    @Qualifier("s")
    private SomeService s;
   // @Resource
    //@Resource注解默认按照名称进行装配，如果名称不存在，再按照类型装配，如果一旦指定了名称，那么只能按照名称进行装配了
//    private SomeService s;
    private String name;

//    public void setName(String name) {
//        this.name = name;
//    }

    public ServiceBean(SomeService service, String name) {
        System.out.println("ServiceBean中有参构造函数");
        this.s = service;
        this.name = name;
    }

    public ServiceBean() {
        System.out.println("ServiceBean中空的构造函数");
    }

//    public void setSomeService(SomeService someService) {
//        this.someService = someService;
//    }

    public void helloService(){
        System.out.println("name="+name);
        s.doSomeThing();
    }
}
